#ifndef TAGGED_STACK_H
#define TAGGED_STACK_H

#include "../atomic/tagged_ptr.h"
#include <stdbool.h>

typedef struct node {
    void* data;
    struct node* next;
} node_t;

typedef struct {
    atomic_tagged_ptr_t top;
} tagged_stack_t;

void tagged_stack_init(tagged_stack_t* stack);
bool tagged_stack_push(tagged_stack_t* stack, void* data);
void* tagged_stack_pop(tagged_stack_t* stack);
bool tagged_stack_is_empty(tagged_stack_t* stack);

#endif // TAGGED_STACK_H 